5.4.3 簡単に使えるABC
「他のコレクション型と同じインタフェースでより複雑な振る舞いをするクラスを書く (5.5)」とき
例 class AliasedIngredients(collections.abc.Set):
https://github.com/pviafore/RobustPython/blob/dafb95d801dff2c8ff7856ba46d3c052d54e0033/code_examples/chapter5/abc.py
__contains__・__iter__・__len__を実装
コレクション抽象基底クラスより、SetはCollection(=SetはCollectionを継承している)
collections.abc.Collectionが要求する3つのメソッドを実装した
一部のメソッドだけを定義したら、その他はただで手に入る。
型アノテーションでcollections.abcのABCを使うと、よりジェネリックなコードを書ける
Iterableで型ヒントする例
=「引数が__iter__()をサポートする限り」
ref: イテレータ型(Python 組み込み型)